package com.valuegroup.smarttodo.data.model;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

import androidx.annotation.IntDef;
import androidx.annotation.StringDef;

import com.valuegroup.smarttodo.R;

public class AppStatus {

    @Retention(RetentionPolicy.SOURCE)
    @IntDef({YesNo.YES, YesNo.NO})
    public @interface YesNo {
        int NO = 0;
        int YES = 1;
    }

    @Retention(RetentionPolicy.SOURCE)
    @IntDef({Succeed.YES, Succeed.NO})
    public @interface Succeed {
        int NO = 0;
        int YES = 1;
    }

    @Retention(RetentionPolicy.SOURCE)
    @IntDef({TaskType.NORMAL, TaskType.STUDY, TaskType.GOAL})
    public @interface TaskType {
        int NORMAL = 1; // 自定义任务
        int STUDY = 2; // 学习任务
        int GOAL = 3; // 目标任务
    }

    @Retention(RetentionPolicy.SOURCE)
    @IntDef({EventType.LINE_NORMAL, EventType.NORMAL, EventType.LINE_STUDY, EventType.STUDY, EventType.LINE_GOALS, EventType.GOALS_MONTH, EventType.GOALS_QUARTER, EventType.GOALS_YEAR})
    public @interface EventType {
        int LINE_NORMAL = 10; // 普通事件标准线（用于查询）
        int LINE_STUDY = 20; // 学习事件标准线（用于查询）
        int LINE_GOALS = 30;// 目标事件标准线（用于查询）

        int NORMAL = 11; // 普通事件
        int STUDY = 21; // 学习事件
        int GOALS_MONTH = 31; // 月度目标事件
        int GOALS_QUARTER = 32; // 季度目标事件
        int GOALS_YEAR = 33; // 年度目标事件
    }

    @Retention(RetentionPolicy.SOURCE)
    @IntDef({RemarkType.TASK, RemarkType.GOALS, RemarkType.IDEALITY})
    public @interface RemarkType {
        int TASK = 1; // 任务
        int GOALS = 2; // 目标
        int IDEALITY = 3; // 理想
        int HABIT_SIGNIN = 4; // 习惯打卡
    }

    @Retention(RetentionPolicy.SOURCE)
    @IntDef({GoalsRange.MONTHLY, GoalsRange.QUARTER, GoalsRange.YEAR})
    public @interface GoalsRange {
        int MONTHLY = 1; // 月度
        int QUARTER = 2; // 季度
        int YEAR = 3; // 年度
    }

    @Retention(RetentionPolicy.SOURCE)
    @IntDef({
            RemindType.NORMAL,
            RemindType.NOW,
            RemindType.AHEAD10,
            RemindType.AHEAD30,
            RemindType.AHEAD60,
            RemindType.AHEAD1D
    })
    public @interface RemindType {
        int NORMAL = 0; // 不提醒
        int NOW = 1; // 事件发生时
        int AHEAD10 = 2; // 提前10分钟
        int AHEAD30 = 3; // 提前30分钟
        int AHEAD60 = 4; // 提前1小时
        int AHEAD1D = 5; // 提前1天
    }

    @Retention(RetentionPolicy.SOURCE)
    @IntDef({
            RepeatType.ONETIME,
            RepeatType.EVERYDAY,
            RepeatType.WORKDAY,
            RepeatType.EVERYWEEK,
            RepeatType.EVERYMONTH,
            RepeatType.EVERYYEAR,
            RepeatType.EVERYYEAR_CN,
            RepeatType.UNWORKDAY
    })
    public @interface RepeatType {
        int ONETIME = 0; // 一次性活动
        int EVERYDAY = 1; // 每天
        int WORKDAY = 2; // 每个工作日
        int EVERYWEEK = 3; // 每周
        int EVERYMONTH = 4; // 每月
        int EVERYYEAR = 5; // 每年
        int EVERYYEAR_CN = 6; // 每年农历
        int UNWORKDAY = 7; // 每个周末
    }

    @Retention(RetentionPolicy.SOURCE)
    @IntDef({RepeatLimit.DEADLINE, RepeatLimit.NUMBER})
    public @interface RepeatLimit {
        int DEADLINE = 0;// 按日期截止
        int NUMBER = 1;// 按次数截止
    }

    @Retention(RetentionPolicy.SOURCE)
    @IntDef({Status.NORMAL, Status.DEL})
    public @interface Status {
        int NORMAL = 0;
        int DEL = 9;
    }

    @Retention(RetentionPolicy.SOURCE)
    @IntDef({GoalsRelateType.EVENT, GoalsRelateType.TAG, GoalsRelateType.STUDY, GoalsRelateType.IDEALITY})
    public @interface GoalsRelateType {
        int EVENT = 0;
        int TAG = 1;
        int STUDY = 3;
        int IDEALITY = 4;
    }

    public static String[] QuadrantLabArr = new String[]{"优先级", "重要紧急", "重要不紧急", "不重要紧急", "不重要不紧急"};
    public static Integer[] QuadrantColorArr = new Integer[]{0, R.color.qOne, R.color.qTwo, R.color.qThree, R.color.qFour};
    public static Integer[] QuadrantTagArr = new Integer[]{0, R.drawable.ic_1_gray3, R.drawable.ic_2_gray3, R.drawable.ic_3_gray3, R.drawable.ic_4_gray3};

    // 优先级
    @Retention(RetentionPolicy.SOURCE)
    @IntDef({Quadrant.ONE, Quadrant.TWO, Quadrant.THREE, Quadrant.FOUR})
    public @interface Quadrant {
        int ONE = 1;// 重要紧急
        int TWO = 2;// 重要不紧急
        int THREE = 3;// 不重要紧急
        int FOUR = 4;// 不重要不紧急
    }


    @Retention(RetentionPolicy.SOURCE)
    @IntDef({
            SumType.DAY,
            SumType.WEEK,
            SumType.MONTH,
            SumType.QUARTER,
            SumType.YEAR
    })
    public @interface SumType {
        int DAY = 1; // 日总结
        int WEEK = 2; // 周总结
        int MONTH = 3; // 月度总结
        int QUARTER = 4; // 季度总结
        int YEAR = 5; // 年度总结
    }


    /*@Retention(RetentionPolicy.SOURCE)
    @IntDef({
            TaskSortTypeEnum.NORMAL,
            TaskSortTypeEnum.STAR,
            TaskSortTypeEnum.DEADLINE,
            TaskSortTypeEnum.FINISH,
            TaskSortTypeEnum.ABC,
            TaskSortTypeEnum.CREATEDDT
    })
    public @interface TaskSortTypeEnum {
        int NORMAL = 0; // 不显示排序，默认按id排序
        int STAR = 1; //重要性
        int DEADLINE = 2; //截止日期
        int FINISH = 3; //已完成
        int ABC = 4; //字母排序
        int CREATEDDT = 5; //创建时间
    }*/
}
